#!/usr/bin/python3
import os
import shutil
import subprocess
import sys


def exit_with_message(message):
    print(message)
    print('Завершение работы программы...')
    sys.exit(0)


if len(sys.argv) > 2:
    exit_with_message('Указано больше одного файла для сборки.')
elif len(sys.argv) == 2 and not sys.argv[1].endswith('.spec'):
    exit_with_message('Указанный файл не является файлом spec.')
elif len(sys.argv) == 2:
    specfile = os.path.join(os.getcwd(), sys.argv[1])
elif len(sys.argv) == 1:
    if '.bbrpm' not in os.listdir(os.getcwd()):
        exit_with_message('Не найдена папка .bbrpm, в которой должен находиться spec-файл.')
    files = [i for i in os.listdir(os.path.join(os.getcwd(), './.bbrpm')) if i.endswith('.spec')]
    if len(files) > 1:
        exit_with_message('В папке .bbrpm найдено больше одного файла spec.')
    elif len(files) == 0:
        exit_with_message('В папке .bbrpm не найдены файлы spec.')
    specfile = os.path.join(os.getcwd(), '.bbrpm', files[0])

working_folder = specfile.rsplit("/", 1)[0]

res = subprocess.run(f'cd {working_folder} && git init && spectool -g {specfile} && '
                     f'abf rpmbuild', shell=True, capture_output=True).stdout.decode()
result = [i for i in os.listdir(working_folder) if i.endswith('.rpm') and not i.endswith('.src.rpm')]
if result:
    if working_folder != os.getcwd():
        shutil.copy(os.path.join(working_folder, result[0]), os.getcwd())
    exit_with_message(f'rpm собран: {result[0]}')
else:
    exit_with_message('Ошибка сборки rpm.')

print(res)
